﻿<?php
/* Tao menu cho plugin */
function myplugin_extends_navigation(global_navigation $navigation) {
	$nodeCDIO 		= $navigation->add('CDIO');
	//curr
	$nodeCurr 		= $nodeCDIO->add('Curriculum');
	
	/******************************************************************************************
	*						CURRICULUM MANAGEMENT
	******************************************************************************************/
	$nodeProgram		= $nodeCurr->add('Program', new moodle_url($CFG->wwwroot.'/local/myplugin/curriculum/add_program.php'));
	$nodeMajor 		= $nodeCurr->add('Major', new moodle_url($CFG->wwwroot.'/local/myplugin/curriculum/add_major.php'));
	$nodeSubject 	= $nodeCurr->add('Subject', new moodle_url($CFG->wwwroot.'/local/myplugin/curriculum/add_subject.php'));
	$nodeBlock 		= $nodeCurr->add('Block', new moodle_url($CFG->wwwroot.'/local/myplugin/curriculum/add_bok.php'));
	$nodeCurriculum 		= $nodeCurr->add('Curriculum', new moodle_url($CFG->wwwroot.'/local/myplugin/curriculum/view_curriculum.php'));
	
	//==============
	
	//$nodeview 		= $nodeviewcurr->add('View Subject Of Program', new moodle_url($CFG->wwwroot.'/local/myplugin/view_program.php'));
	
	//$nodeview 		= $nodeviewcurr->add('View Curriculum 2', new moodle_url($CFG->wwwroot.'/local/myplugin/view_curriculum2.php'));
	//==============
	/******************************************************************************************
	*						LEARNING OUTCOMES MANAGEMENT
	******************************************************************************************/
	$nodeLO 	= $nodeCDIO->add('Learning Outcomes');
	$nodeaddlo 		= $nodeLO->add('Import', new moodle_url($CFG->wwwroot.'/local/myplugin/lo/import_lo.php'));
	$nodeaddlo 		= $nodeLO->add('View', new moodle_url($CFG->wwwroot.'/local/myplugin/lo/index.php'));
	//===============syll
	$nodeSyll 	= $nodeCDIO->add('Syllabus  Management');
	
	$nodeCDIO->forceopen = true;
	$nodeCurr->forceopen = true;
	// $nodecreatecurr->forceopen = true;
	$nodeCurr->forceopen = true;
	$nodeviewcurr->forceopen = true;
	$nodeLO->forceopen = true;
}

class curriculum_management 
{
    public function add_program($program_obj) 
    {
		 global $DB;
    	 $DB->insert_record('program', $program_obj);
    }
	
	/*
	 * Thêm một block mới vào CSDL cho một chương trình đào tạo hoặc cho một ngành
	 */
	public function add_block_knowledge($block_obj, $program, $majors, $subjects) 
    {
		try 
		{
			global $DB;
			$transaction = $DB->start_delegated_transaction();
			$n_major = count($majors);					//Số lượng chuyên ngành dc chọn để áp dụng khối kiến thức
			if($n_major == 0) {							//Block áp dụng cho chương trình đào tạo
				$block_obj['program_id'] = $program;		//Thêm id của program mà block thuộc về
			}
			//Lưu dữ liệu vào bảng block_of_knowledge trước
			$DB->insert_record('block_of_knowledge', $block_obj);	
			
			//lấy id của block vừa thêm để có dữ liệu thêm vào các bảng có liên quan
			$sql = 'SELECT * FROM mdl_block_of_knowledge  where id in (SELECT max(id) as id FROM `mdl_block_of_knowledge`) ;';	
			$block = $DB->get_record_sql($sql);
			
			//Nếu block áp dụng cho 1 hoặc nhiều chuyên ngành thì thêm thông tin vào major_block
			if($n_major>0)  {
				for($i = 0; $i<$n_major; $i++) {
					$major_block = array();
					$major_block['id'] = '';
					$major_block['major_id'] = $majors[$i];
					$major_block['blockofknowledge_id']= $block->id;
					$DB->insert_record('major_block', $major_block);
				}
			}
			//Lưu subject_block
			$subject_block = array();
			foreach($subjects as $s) {
				$subject_block['id']= '';
				$subject_block['subject_id'] = $s;
				$subject_block['blockofknowledge_id'] = $block->id;
				$DB->insert_record('subject_block', $subject_block);
			}
			$transaction->allow_commit();
		} 
		catch (Exception $e) 
		{
			$transaction->rollback($e);
		}
	}	
	
	public function update_block_knowledge($blockid, $program, $majors, $subjects)
	{
		echo "<h1>Subjects : ".count($subjects)."</h1>";
		global $DB;
		
		//Update 
		//Xóa các môn học cũ
		$DB->delete_records('subject_block', array('blockofknowledge_id'=>$blockid));
		
		//Lưu môn học mới
		$subject_block = array();
		foreach($subjects as $s) {
			$subject_block['id']= '';
			$subject_block['subject_id'] = $s;
			$subject_block['blockofknowledge_id'] = $blockid;
			$DB->insert_record('subject_block', $subject_block);
		}
		
		//Xóa các majors cũ
		$DB->delete_records('major_block', array('blockofknowledge_id'=>$blockid));
		
		//Lưu major mới
		$major_block = array();
		foreach($majors as $m) {
			$major_block['id'] = '';
			$major_block['major_id'] = $m;
			$major_block['blockofknowledge_id']= $blockid;
			$DB->insert_record('major_block', $major_block);
		}
	}	
	
	/*
	 * Thêm một môn học mới vào CSDL
	 */ 
	public function add_subject($subject_obj)
	{
		global $DB;
    	$DB->insert_record('subject', $subject_obj);
	}
	
	public function add_program_major($program_major) 
    {
		global $DB;
		 if($DB->insert_record('program_major', $program_major))
		 {
			return true;
			
		}
		else
		{
			return false;
		}
		 
    }
	
	public function add_major($major_info) 
	{
		global $DB;
		$DB->insert_record('major', $major_info);
	}
	
	//them subject vào khối kiến thức (bảng mdl_subject_major) 
	public function add_pro_bok_desc($pro_bok_desc) 
    {
		global $DB;
		$DB->insert_record('program_block_desc', $pro_bok_desc);
    }
	
	public function update_pro_bok_desc($pro_bok_desc) 
    {
		global $DB;
		$DB->update_record('program_block_desc', $pro_bok_desc);
    }
	
	public function add_subject_major($pro_bok_desc) 
    {
		global $DB;
		$DB->insert_record('subject_major', $pro_bok_desc);
    }
	
	public function get_curriculum_structure($program_id)
		{	
			global $DB;
			$options = array("not"=>"Các khối kiến thức");
			//Lấy danh sách các khối kiến thức chung
			$blocks = $DB->get_records('block_of_knowledge', array('program_id'=>$program_id));
			
			foreach ($blocks as $b){
				$options[$b->id] = $b->bok_name; 
			}
			//Lấy danh sách các chuyên ngành
			$majors = $DB->get_records('major', array('program_id'=>$program_id));
			foreach ($majors as $m) {
				//Ứng với mỗi chuyên ngành liệt kê các khối kiến thức của từng chuyên ngành
				$sql = "SELECT mdl_block_of_knowledge.id, mdl_block_of_knowledge.bok_name ".
						" FROM mdl_block_of_knowledge inner join mdl_major_block on mdl_block_of_knowledge.id = mdl_major_block.blockofknowledge_id ".
						" WHERE mdl_major_block.major_id = ".$m->id;		
				$block_major = $DB->get_records_sql($sql);
				
				
				foreach ($block_major as $b) {
					$options[$b->id] = $b->bok_name; 
				}
			}
			
			return $options;
		}
	
	public function show_program_in_treeview($program_id)
	{
		global $DB, $CFG;
		
		 $str = "";
		$str = $str.'<div id="treecontrol" style="display:block;" >
			<a title="Collapse the entire tree below" href="#"> Collapse All</a> | 
			<a title="Expand the entire tree below" href="#"> Expand All</a> | 
			<a title="Toggle the tree below, opening closed branches, closing open branches" href="#">Toggle All</a>
		</div>';
		$str = $str. '<ul id="red" class="treeview-red treeview">';
		
		//Lấy danh sách các khối kiến thức chung
		$blocks = $DB->get_records('block_of_knowledge', array('program_id'=>$program_id));
		$str = $str."<li>Các khối kiến thức chung<ul>";
		foreach ($blocks as $b)
		{
			$str = $str.'<li>'.$b->bok_name .'</li>';
			//$str = $str.get_children_nodes($b->id).'</ul></li>';
		}
		$str = $str."</ul></li>";
		//Lấy danh sách các chuyên ngành
		$majors = $DB->get_records('major', array('program_id'=>$program_id));
		$str = $str."<li>Các chuyên ngành<ul>";
		foreach ($majors as $m)
		{
			$str = $str.'<li>'.$m->major_name;
			//Ứng với mỗi chuyên ngành liệt kê các khối kiến thức của từng chuyên ngành
			$sql = "SELECT mdl_block_of_knowledge.bok_name ".
					" FROM mdl_block_of_knowledge inner join mdl_major_block on mdl_block_of_knowledge.id = mdl_major_block.blockofknowledge_id ".
					" WHERE mdl_major_block.major_id = ".$m->id;
					
			$block_major = $DB->get_records_sql($sql);
			$str = $str."<ul>";
			foreach ($block_major as $b)
			{
				$str = $str.'<li>'.$b->bok_name .'</li>';	
			}
			$str = $str."</ul></li>";
		}
		
		$str = $str."</ul></li>";
		echo $str.'</ul>';		
	}
//================================================== EDIT INFORMATION AREA =========================
		
	public function edit_subject($subject_info) 
	{
		global $DB;
		$DB->update_record('subject', $subject_info);
	}
	
	public function edit_program($program_info) 
	{
		global $DB;
		$DB->update_record('program', $program_info);
	}
	
	public function import_subject($subject) 
	{
		global $DB;
		$DB->insert_record('subject', $subject);
	}
} 

//========================================LEARNING OUTCOME MODULE===========================================//
class learning_outcome_management
{
	public function add_new_lo($lo)
	{
		global $DB;
		$DB->insert_record('learning_outcome', $lo);
	}
}


